package com.cykj.order.mapper;

import com.cykj.order.domain.BsOrders;
import com.cykj.order.domain.BsRegion;
import com.cykj.order.domain.dto.OrderProductDetailDto;
import com.cykj.order.domain.vo.BsOrdersVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 订单Mapper接口
 * 
 * @author cykj
 */
@Mapper
public interface OrderMapper {
    
    /**
     * 查询订单列表
     * 分页功能通过PageHelper在Service层控制
     * 
     * @param bsOrders 订单查询条件
     * @return 订单集合
     */
    List<BsOrdersVo> selectOrderList(BsOrders bsOrders);
    
    /**
     * 根据订单ID查询订单详情（包含用户、商家等扩展信息）
     * 
     * @param id 订单ID
     * @return 订单扩展信息
     */
    BsOrdersVo selectOrderVoById(Long id);
    
    /**
     * 根据订单号查询订单详情
     * 
     * @param orderNumber 订单号
     * @return 订单扩展信息
     */
    BsOrdersVo selectOrderByOrderNumber(String orderNumber);
    
    /**
     * 根据订单ID查询订单商品详情（包含商品信息和订单明细）
     * 
     * @param orderId 订单ID
     * @return 订单商品详情集合
     */
    List<OrderProductDetailDto> selectOrderProductDetailsByOrderId(@Param("orderId") Long orderId);
    
    /**
     * 修改订单信息
     * 
     * @param bsOrders 订单信息
     * @return 结果
     */
    int updateOrder(BsOrders bsOrders);

    /**
     * 查询地区信息
     * 
     * @return 地区列表
     */
    List<BsRegion> selectRegion();
}
